local skynet = require "skynet"
local socket = require "skynet.socket"

function client(id)
    local i = 0
    while (i < 3) do
        skynet.error("send data" .. i)
        socket.write(id, "data" .. i .. "\n")
        local str = socket.readline(id)
        if str then
            skynet.error("recv " .. str)
        else
            skynet.error("disconnect")
        end
        i = i + 1
    end
    socket.close(id) -- 不主动关闭也行，服务退出的时候，会自动将套接字关闭
    skynet.exit()
end

skynet.start(function()
    local addr = "127.0.0.1:8001"
    skynet.error("connect " .. addr)
    local id = socket.open(addr)
    assert(id)
    -- 启动读协程
    skynet.fork(client, id)
end)


-- socket client 服务间也可以使用socket通信
-- 需要注意的是：
-- 虽然这样也可以让两个服务之间进行通信，但是如果在同一个节点的服务，
-- 通信一般就用lua消息来通信就好，毕竟维护套接字的成本远比本地消息调度要高的多。